home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / usenet / volume6 / conquer4 / patch5a < prev    next >
Encoding:
Internet Message Format  |  1989-09-11  |  49.6 KB

  1. Path: uunet!zephyr.ens.tek.com!tekgen!tekred!saab!billr
  2. From: billr@saab.CNA.TEK.COM (Bill Randle)
  3. Newsgroups: comp.sources.games
  4. Subject: v08i013:  conquer4 - middle earth multi-player game (V4), Patch5a
  5. Message-ID: <4513@tekred.CNA.TEK.COM>
  6. Date: 1 Sep 89 18:52:12 GMT
  7. Sender: nobody@tekred.CNA.TEK.COM
  8. Lines: 1610
  9. Approved: billr@saab.CNA.TEK.COM
  10.  
  11. Submitted-by: Adam Bryant <adb@cs.bu.edu>
  12. Posting-number: Volume 8, Issue 13
  13. Archive-name: conquer4/Patch5a
  14. Patch-To: conquer4: Volume 6, Issue 83-97
  15.  
  16. [from the author...]
  17.  
  18. [[Okay,
  19.    here are the latest patches to conquer version 4.
  20.  
  21. Notes:
  22.  
  23.    The patch is in three shar files, and the shar
  24. files unpack into 5 files:
  25.  
  26.       patchV4.5       - patch file to go to version 4.5
  27.       CONQPS.INFO     - information file on conqps
  28.       psmap.c         - source file for conqps
  29.       psmap.h         - header file for conqps
  30.       psmap.ps        - postscript data file for conqps
  31.  
  32.    Conqps is a nifty program written by Martin Forssen to generate
  33. very nice postscript displays of conquer maps.  The file CONQPS.INFO
  34. describes the options available.
  35.  
  36.    The patch makes the following enhancements/bug fixes:
  37.  
  38.        o  the map redisplay is now much more efficient.
  39.        o  the newspaper reading facility is enhanced.
  40.        o  god can now added or remove magics selectively.
  41.        o  cheat() does not cheat for 'NPC' players who have moved.
  42.        o  fixed major bugs with assigning of multiple magics on
  43.            newlogins.
  44.        o  added some NPC routines to have them obey magic power
  45.            limitations.
  46.        o  enhanced the makefile installation routines.
  47.  
  48.    NOTE:  Ed Barlow has provided his new address and phone, and
  49.      is looking for information on unix access in N.Y.  See the
  50.      files 'README' and 'header.h' for more info.
  51.  
  52.    As before, enhancements are listed in the patched 'notes.v4'
  53. file.
  54.  
  55. adam bryant]]
  56.  
  57.  
  58. #!/bin/sh
  59. # shar:    Shell Archiver  (v1.22)
  60. #
  61. # This is part 1 of a multipart archive                                    
  62. # do not concatenate these parts, unpack them in order with /bin/sh        
  63. #
  64. #    Run the following text with /bin/sh to create:
  65. #      CONQPS.INFO
  66. #      patchV4.5
  67. #      psmap.c
  68. #      psmap.h
  69. #      psmap.ps
  70. #
  71. if test -r s2_seq_.tmp
  72. then echo "Must unpack archives in sequence!"
  73.      next=`cat s2_seq_.tmp`; echo "Please unpack part $next next"
  74.      exit 1; fi
  75. echo "x - extracting CONQPS.INFO (Text)"
  76. sed 's/^X//' << 'SHAR_EOF' > CONQPS.INFO &&
  77. X
  78. X
  79. X  Description
  80. X
  81. XThe conqps program translates maps from conquer to postscript suitable for
  82. Xprinting on a postscript printer. Conqps can act as a filter, or you
  83. Xcan give filenames to it. There is a lot of options to customise the output.
  84. XBut the only option you should remember is the h option, which gives
  85. Xa brief desription of all the options. If you are anxious to try it out
  86. Xjust type  'conquer -p | conqps >psmap'  which should give you a file called
  87. Xpsmap, which can be sent to a postscript printer. There is a limitation of how
  88. Xbig the maps may be, this lies in the postscript language. But at our
  89. Xsite I have been able to print 256x256 maps (I haven't tried bigger) on
  90. Xa LaserWriter II.
  91. X
  92. X  Options
  93. X
  94. X There is a lot of options, but you don't need to know all of them. Some
  95. X options were put in to let advanced users get more control over the output.
  96. X Valid options are 'cfghlLnopstuvWXY'. They do the following:
  97. X
  98. X  c  Turns off printing of coordinates around the edge of the map.
  99. X
  100. X  f fontname  Sets the font to 'fontname', you can use any font that is in your
  101. X          printer. Default is Times-Roman. The program also looks for
  102. X          the environment variable CONQ_PSFONT. The f option overrides
  103. X          both the default and the environment variable.
  104. X  
  105. X  g  Turns off printing of the grid at the unknown parts of the map.
  106. X
  107. X  h  Shows a brief description of the options and some defaults.
  108. X
  109. X  l  If you print larger maps it's possible to exhaust the memory of your
  110. X     printer. This option uses a feature in the Apple LaserWriter which 
  111. X     conserves memory, but gives you a smaller map. This option is not
  112. X     fully tested, and should probably not be used.
  113. X
  114. X  n  Normally the map is centered around the parts of the world you know.
  115. X     This option turns off this feature, and lets the program do as it
  116. X     damn well pleases with your map :-)
  117. X
  118. X  o x,y  If you want to print just a small part of a bigger map use this
  119. X         option. It makes conqps just to produce one page centered around
  120. X     coordinates x,y.
  121. X
  122. X  p type  Sets the type of paper you have in the printer. Possible values
  123. X      today are: A4 (European standard) LETTER (American standard) or
  124. X      OTHER (should be local standard). You shouldn't have to use this
  125. X      option since the person who maintains conquer at your site should
  126. X      have set the right papersize as default (This is done in the
  127. X      Makefile).
  128. X
  129. X  s size  Sets the size of each square of the map. This is useful to get
  130. X      more map printed on fewer pages, but it will be smaller.
  131. X      Default value is 9.
  132. X
  133. X  t string  Conqps tries to guess a nice title to the map for you. Normally
  134. X        this is something like 'Designation Map for Nation Midkemia on
  135. X        Turn 2' (this title is actually provided from the conquer program).
  136. X        If however you would like to have your own title shown, just use
  137. X        the t option, which replaces the default title with string.
  138. X
  139. X  u  Normally conqps put small pictures in some of your squares instead of
  140. X     just letters. This option forces conqps not to do this, but instead
  141. X     print the letters.
  142. X
  143. X  v  Puts conqps in verbose mode. For example you will be told how big the map
  144. X     is and how big it will be on the printer.
  145. X
  146. X  L,W,X,Y  If none of the paper types fits your needs you can alter the size
  147. X       directly with these options. All these options use one postscript
  148. X       point (1/72 inch) as their unit. L sets the length of the page.
  149. X       W sets the width. X sets the x coordinate for the leftmost viewable
  150. X       pixel on the output, and Y sets the y coordinate. These options
  151. X       are normally never used, instead you should experiment with
  152. X       the p option.
  153. X
  154. X  Bugs
  155. X
  156. X Hopefully no.
  157. X
  158. X
  159. X  Comments
  160. X
  161. X If you have any comments or ideas mail them to d8forma@dtek.chalmers.se  .
  162. X
  163. X                        MaF
  164. X
  165. SHAR_EOF
  166. chmod 0666 CONQPS.INFO || echo "restore of CONQPS.INFO fails"
  167. set `wc -c CONQPS.INFO`;Sum=$1
  168. if test "$Sum" != "3751"
  169. then echo original size 3751, current size $Sum;fi
  170. echo "x - extracting patchV4.5 (Text)"
  171. sed 's/^X//' << 'SHAR_EOF' > patchV4.5 &&
  172. X*** opatchlevel.h    Sat Aug 26 19:04:07 1989
  173. X--- patchlevel.h    Sat Aug 26 19:04:14 1989
  174. X***************
  175. X*** 1 ****
  176. X! #define PATCHLEVEL    4
  177. X--- 1 ----
  178. X! #define PATCHLEVEL    5
  179. X*** onotes.v4    Sat Aug 26 19:04:07 1989
  180. X--- notes.v4    Sat Aug 26 19:04:14 1989
  181. X***************
  182. X*** 156,161 ****
  183. X--- 156,190 ----
  184. X  108. made sure that NPCs do not group or disband ZOMBIES.
  185. X  109. added a NOSCORE compiler option to allow only god to see full score list.
  186. X  110. changed the class name NPC to monster.
  187. X+ ===4.0 patch number four released => 4.4 ===========================
  188. X+ 111. fixed bug with scouts being grouped by NPCs.
  189. X+ 112. fixed bug that did not provide NPCs with leaders.
  190. X+ 113. reworked cexecute.c to allow multiple magic initializations.
  191. X+ 114. touched up newlogin() and makeworld().
  192. X+ 115. installed routines to limit NPCs by following the VOID and HIDDEN
  193. X+     powers.  []
  194. X+ 116. altered the killmagk() routine to allow addition and removal: god_magk().
  195. X+ 117. commented out some nations from the nations file.
  196. X+ 118. tinkered with makeworl.c again.
  197. X+ 119. added in the conqps functions by Martin Forrsen.
  198. X+ 120. rewrote cheat() routine to verify that nation hadn't been touched by
  199. X+     a player during that turn.
  200. X+ 121. made a 'PLEASE WAIT' message appear on login, since response of some
  201. X+     computers is slower than expected during startup. [T. Kivinen]
  202. X+ 122. made sure fison was changed properly during 'z' command. [T. Kivinen]
  203. X+ 123. changed monster capture statements to go to end of page. [T. Kivinen]
  204. X+ 124. altered newpaper() to allow quick scaning. [T. Kivenen]
  205. X+ 125. added a rudimentary repeat command to repeat last unit affecting command.
  206. X+ 126. altered the 'reading ....' statements in DEBUG mode to go to stderr.
  207. X+ 127. ships now lose only N_CITYCOST movepoints when unloading in cities.
  208. X+ 128. shifted movement below xloc,yloc in army reports for readability.
  209. X+ 129. fixed the redrawing of sectors after movement.
  210. X+ 130. added a patch to avoid a compiler bug in display.c [Richard Caley]
  211. X+ 131. improved screen clearing routine installed. [T. Kivinen]
  212. X+ 132. revamped display under the move people command.
  213. X+ 133. added fix to make sure '-p' command checks void properly. [D. Caplinger]
  214. X+ 134. inserted a check for allowing extra clear when redrawing.
  215. X+ 135. renamed all of the conqps source files to 'psmap'.
  216. X  
  217. X  -------------------------------------------------------------------------
  218. X  | 2.0 POSSIBLE SHORT-TERM ENHANCEMENTS/FIXES FOR CONQUER V4             |
  219. X*** oMakefile    Sat Aug 26 19:04:06 1989
  220. X--- Makefile    Sat Aug 26 19:04:14 1989
  221. X***************
  222. X*** 30,35 ****
  223. X--- 30,51 ----
  224. X  #    Flags to lint
  225. X  LTFLG   = -h -lcurses
  226. X  
  227. X+ #    Options for the postscript map printing program.
  228. X+ #    The file 'conqps.ps' will be installed in the EXEDIR
  229. X+ #    directory which is determined below.
  230. X+ #
  231. X+ #    To avoid building this program, remove $(PSPROG) from
  232. X+ #    both the 'all:' list and the 'install:' list
  233. X+ PSPROG  = conqps
  234. X+ PSSRC   = psmap.c
  235. X+ PSHEAD  = psmap.h
  236. X+ PSDATA  = psmap.ps
  237. X+ #    Default Pagesize Setting:
  238. X+ #        A4 for European page size.
  239. X+ #        LETTER for American page size.
  240. X+ #        OTHER for Local page size.  [edit conqps.h]
  241. X+ PSPAGE  = LETTER
  242. X+ 
  243. X  #    Options for shar program, SHARLIM is limit of each shar
  244. X  #    file created in kilobytes and SHARNAM is the prefix for
  245. X  #    SHARFILE name.
  246. X***************
  247. X*** 75,81 ****
  248. X  CDEFS  = -DDEFAULTDIR=\"$(DEFAULT)\" -DEXEDIR=\"$(EXEDIR)\"
  249. X  
  250. X  #    Options flag used for non-debugging purposes
  251. X! OPTFLG  = -O
  252. X  
  253. X  #    Options flag used for debugging purposes
  254. X  #    [make sure to comment out 'strip' commands in install section]
  255. X--- 91,97 ----
  256. X  CDEFS  = -DDEFAULTDIR=\"$(DEFAULT)\" -DEXEDIR=\"$(EXEDIR)\"
  257. X  
  258. X  #    Options flag used for non-debugging purposes
  259. X! OPTFLG  = -O 
  260. X  
  261. X  #    Options flag used for debugging purposes
  262. X  #    [make sure to comment out 'strip' commands in install section]
  263. X***************
  264. X*** 124,134 ****
  265. X  
  266. X  HEADERS=header.h data.h newlogin.h patchlevel.h
  267. X  SUPT1=nations Makefile $(HELP)[0-5] README run man.pag rules
  268. X! SUPT2=execute messages news commerce
  269. X  ALLFILS=$(SUPT1) $(HEADERS) $(AFILS) commands.c forms.c main.c move.c \
  270. X! reports.c display.c extcmds.c newhelp.c sort.c getopt.c
  271. X  
  272. X! all:    $(ADMIN) $(GAME) $(SORT) helpfile
  273. X      @echo YAY! make new_game to set up permissions, zero appropriate
  274. X      @echo initial files, move $(GAME) and $(ADMIN) to 
  275. X      @echo $(EXEDIR), and set up the world.
  276. X--- 140,151 ----
  277. X  
  278. X  HEADERS=header.h data.h newlogin.h patchlevel.h
  279. X  SUPT1=nations Makefile $(HELP)[0-5] README run man.pag rules
  280. X! SUPT2=execute messages news commerce CONQPS.INFO
  281. X  ALLFILS=$(SUPT1) $(HEADERS) $(AFILS) commands.c forms.c main.c move.c \
  282. X! reports.c display.c extcmds.c newhelp.c sort.c getopt.c \
  283. X! $(PSSRC) $(PSHEAD) $(PSDATA)
  284. X  
  285. X! all:    $(ADMIN) $(GAME) $(SORT) $(PSPROG) helpfile
  286. X      @echo YAY! make new_game to set up permissions, zero appropriate
  287. X      @echo initial files, move $(GAME) and $(ADMIN) to 
  288. X      @echo $(EXEDIR), and set up the world.
  289. X***************
  290. X*** 160,189 ****
  291. X      strip $(SORT)
  292. X  
  293. X  clobber:
  294. X!     $(RM) *.o $(HELPOUT)[0-5] $(SORT) newhelp in$(GAME) in$(SORT) in$(ADMIN) $(HELPSCR).[12] lint[aghs] conquer.doc $(GAME) $(ADMIN) $(NULL)
  295. X  
  296. X  clean:
  297. X!     $(RM) *.o lint[aghs] conquer.doc $(NULL)
  298. X  
  299. X  in$(GAME):    $(GAME)
  300. X      -$(RM) $(EXEDIR)/$(GAME)
  301. X!     $(CP) $(GAME) $(EXEDIR)
  302. X      chmod 4751 $(EXEDIR)/$(GAME)
  303. X      touch in$(GAME)
  304. X  
  305. X  in$(ADMIN):    $(ADMIN)
  306. X      -$(RM) $(EXEDIR)/$(ADMIN)
  307. X!     $(CP) $(ADMIN) $(EXEDIR)
  308. X      chmod 4751 $(EXEDIR)/$(ADMIN)
  309. X      touch in$(ADMIN)
  310. X  
  311. X  in$(SORT):    $(SORT)
  312. X      -$(RM) $(EXEDIR)/$(SORT)
  313. X!     $(CP) $(SORT) $(EXEDIR)
  314. X      chmod 751 $(EXEDIR)/$(SORT)
  315. X      touch in$(SORT)
  316. X  
  317. X! install:    in$(GAME) in$(ADMIN) in$(SORT) insthelp
  318. X      @echo ""
  319. X      @echo "Installation complete"
  320. X  
  321. X--- 177,220 ----
  322. X      strip $(SORT)
  323. X  
  324. X  clobber:
  325. X!     -$(RM) *.o $(HELPOUT)[0-5] $(PSPROG) $(SORT) $(NULL)
  326. X!     -$(RM) newhelp in$(GAME) in$(SORT) in$(ADMIN) in$(PSPROG) $(NULL)
  327. X!     -$(RM) $(HELPSCR).[12] lint[ag] conquer.doc $(GAME) $(ADMIN) $(NULL)
  328. X  
  329. X  clean:
  330. X!     $(RM) *.o lint[ag] conquer.doc $(NULL)
  331. X  
  332. X  in$(GAME):    $(GAME)
  333. X      -$(RM) $(EXEDIR)/$(GAME)
  334. X!     mv $(GAME) $(EXEDIR)
  335. X      chmod 4751 $(EXEDIR)/$(GAME)
  336. X+     touch $(GAME)
  337. X      touch in$(GAME)
  338. X  
  339. X  in$(ADMIN):    $(ADMIN)
  340. X      -$(RM) $(EXEDIR)/$(ADMIN)
  341. X!     mv $(ADMIN) $(EXEDIR)
  342. X      chmod 4751 $(EXEDIR)/$(ADMIN)
  343. X+     touch $(ADMIN)
  344. X      touch in$(ADMIN)
  345. X  
  346. X  in$(SORT):    $(SORT)
  347. X      -$(RM) $(EXEDIR)/$(SORT)
  348. X!     mv $(SORT) $(EXEDIR)
  349. X      chmod 751 $(EXEDIR)/$(SORT)
  350. X+     touch $(SORT)
  351. X      touch in$(SORT)
  352. X  
  353. X! in$(PSPROG):    $(PSPROG)
  354. X!     -$(RM) $(EXEDIR)/$(PSPROG)
  355. X!     mv $(PSPROG) $(EXEDIR)
  356. X!     $(CP) $(PSDATA) $(EXEDIR)
  357. X!     chmod 751 $(EXEDIR)/$(PSPROG)
  358. X!     chmod 644 $(EXEDIR)/$(PSDATA)
  359. X!     touch $(PSPROG)
  360. X!     touch in$(PSPROG)
  361. X! 
  362. X! install:    in$(GAME) in$(ADMIN) in$(SORT) in$(PSPROG) insthelp
  363. X      @echo ""
  364. X      @echo "Installation complete"
  365. X  
  366. X***************
  367. X*** 194,202 ****
  368. X      -mkdir $(DEFAULT)/$(GAMEID) $(NULL)
  369. X      chmod 755 $(EXEDIR)
  370. X      chmod 750 $(DEFAULT)/$(GAMEID) $(DEFAULT)
  371. X!     $(CP) $(GAME) $(ADMIN) $(SORT) $(EXEDIR)
  372. X      chmod 4755 $(EXEDIR)/$(GAME) $(EXEDIR)/$(ADMIN)
  373. X!     chmod 0755 $(EXEDIR)/$(SORT)
  374. X      chmod 0600 nations
  375. X      chmod 0700 run
  376. X      $(CP) nations rules $(DEFAULT)/$(GAMEID)
  377. X--- 225,234 ----
  378. X      -mkdir $(DEFAULT)/$(GAMEID) $(NULL)
  379. X      chmod 755 $(EXEDIR)
  380. X      chmod 750 $(DEFAULT)/$(GAMEID) $(DEFAULT)
  381. X!     $(CP) $(GAME) $(ADMIN) $(SORT) $(PSPROG) $(PSDATA) $(EXEDIR)
  382. X      chmod 4755 $(EXEDIR)/$(GAME) $(EXEDIR)/$(ADMIN)
  383. X!     chmod 0755 $(EXEDIR)/$(SORT) $(EXEDIR)/$(PSPROG)
  384. X!     chmod 0644 $(EXEDIR)/$(PSDATA)
  385. X      chmod 0600 nations
  386. X      chmod 0700 run
  387. X      $(CP) nations rules $(DEFAULT)/$(GAMEID)
  388. X***************
  389. X*** 256,262 ****
  390. X      newhelp
  391. X  
  392. X  newhelp:    dataG.o    newhelp.o
  393. X!     $(CC) dataG.o newhelp.o -o newhelp
  394. X  
  395. X  lint:
  396. X      lint $(LTFLG) $(CDEFS) -DCONQUER $(GFILS) > lintg
  397. X--- 288,303 ----
  398. X      newhelp
  399. X  
  400. X  newhelp:    dataG.o    newhelp.o
  401. X!     $(CC) $(OPTFLG) dataG.o newhelp.o -o newhelp
  402. X!     strip newhelp
  403. X! #
  404. X! #    postscript map program
  405. X! PSOPTS  = -DPSFILE=\"$(EXEDIR)/$(PSDATA)\" -D$(PSPAGE)
  406. X! #
  407. X! $(PSPROG):    $(PSSRC) $(PSDATA) $(PSHEAD)
  408. X!     $(CC) $(OPTFLG) $(PSOPTS) $(PSSRC) -o $(PSPROG)
  409. X! #    comment out the next line if debugging
  410. X!     strip $(PSPROG)
  411. X  
  412. X  lint:
  413. X      lint $(LTFLG) $(CDEFS) -DCONQUER $(GFILS) > lintg
  414. X***************
  415. X*** 297,311 ****
  416. X  
  417. X  $(AOBJS):    data.h header.h
  418. X  
  419. X! ioG.o:    data.h header.h patchlevel.h
  420. X  
  421. X! ioA.o:    data.h header.h patchlevel.h
  422. X  
  423. X! newlogin.o:    data.h header.h newlogin.h patchlevel.h
  424. X  
  425. X! main.o:    data.h header.h patchlevel.h
  426. X  
  427. X! newhelp.c:    data.h header.h patchlevel.h
  428. X  
  429. X  #    Clear suffixes
  430. X  .SUFFIXES:    
  431. X--- 338,352 ----
  432. X  
  433. X  $(AOBJS):    data.h header.h
  434. X  
  435. X! ioG.o:    data.h header.h patchlevel.h io.c
  436. X  
  437. X! ioA.o:    data.h header.h patchlevel.h io.c
  438. X  
  439. X! newlogin.o:    data.h header.h newlogin.h patchlevel.h newlogin.c
  440. X  
  441. X! main.o:    data.h header.h patchlevel.h main.c
  442. X  
  443. X! newhelp.o:    data.h header.h patchlevel.h newhelp.c
  444. X  
  445. X  #    Clear suffixes
  446. X  .SUFFIXES:    
  447. X*** oREADME    Sat Aug 26 19:04:06 1989
  448. X--- README    Sat Aug 26 19:04:15 1989
  449. X***************
  450. X*** 21,26 ****
  451. X--- 21,33 ----
  452. X  "conquer-news@bu-cs.bu.edu" and addition to or deletions from the mailing
  453. X  list may be sent to "conquer-news-request@bu-cs.bu.edu".
  454. X  
  455. X+ NOTE: My new phone number is 212-679-1439.  My work has no arpanet.  If anybody
  456. X+ knows of a cheap (free??) way of getting an arpanet login I NEED ONE.  I
  457. X+ basically can make no more changes to Conquer until I can get a network port,
  458. X+ and since i am "volunteering" my time for this project, I am not about to
  459. X+ spend millions of dollars to buy one...  I can get a modem for my PC if
  460. X+ somebody will help me get a port somewhere. -ED-
  461. X+ 
  462. X  Included in this file are the following:
  463. X      1) A Brief Description of Conquer
  464. X      2) Installation (unpacking) Instructions
  465. X*** oheader.h    Sat Aug 26 19:04:06 1989
  466. X--- header.h    Sat Aug 26 19:04:15 1989
  467. X***************
  468. X*** 12,26 ****
  469. X          new software shall, for now, be the perogative of the author.
  470. X      3) loss or damage caused by this software shall not be
  471. X          the responsibility of the author.
  472. X!     4) Ed Barlow shall be notified of enhancements to this software via
  473. X!         electronic mail and, if there is no response, via US mail to:
  474. X  
  475. X              Ed Barlow
  476. X!             562 Clubhouse Dr,
  477. X!             Middletown NJ 07748
  478. X  
  479. X!         My home phone is 201-671-2896. Use it sparingly and call
  480. X!         before 11PM if it is important.
  481. X      5) no attempt shall be made to make any money from this game or to
  482. X          use any portion of this code to make any money without the
  483. X          authors permission.
  484. X--- 12,34 ----
  485. X          new software shall, for now, be the perogative of the author.
  486. X      3) loss or damage caused by this software shall not be
  487. X          the responsibility of the author.
  488. X!     4) Ed Barlow or Adam Bryant shall be notified of enhancements to this 
  489. X!         software via electronic mail and, if there is no response, via 
  490. X!         US mail to:
  491. X  
  492. X              Ed Barlow
  493. X!             115 E 34ths St.
  494. X!             NY, NY 10016
  495. X  
  496. X!         My home phone is 212-679-1439. Use it sparingly and call
  497. X!         before 11PM if it is important.  Note that I no longer have
  498. X!         access to the arpanet and cant really support conquer like
  499. X!         I used to.  If somebody knows of a cheap (free) way of getting
  500. X!         a login somewhere where there is network access - HELP ME!!!!
  501. X!         Since i am "volunteering" my time for this project, I am not 
  502. X!         about to spend millions of dollars to buy network access...  
  503. X!         I can get a modem for my PC if somebody will help me get
  504. X!         something to call into. -ED-
  505. X      5) no attempt shall be made to make any money from this game or to
  506. X          use any portion of this code to make any money without the
  507. X          authors permission.
  508. X***************
  509. X*** 84,89 ****
  510. X--- 92,107 ----
  511. X  #define CHEAT        /* npcs will cheat to keep up - this is a very weak
  512. X                 form of cheating.  I use good npc algorithms 
  513. X                 (i think... comments)            */
  514. X+ /*#define NPC_COUNT_ARMIES   /* defined if NPC nations can always count armies
  515. X+                This makes them to cheat by seeing even VOID and
  516. X+                HIDDEN armies when counting enemy units.    */
  517. X+ /*#define NPC_SEE_SECTORS    /* defined if NPC nations can always see sectors
  518. X+                This allows them to cheat by being allowed to see
  519. X+                all sector attributes of even VOID sectors.    */
  520. X+ #define    NPC_SEE_CITIES         /* defined if NPC nations can always see cities
  521. X+                This allows them to cheat by being able to see
  522. X+                if a VOID sector is a city/town.  Simulates the
  523. X+                players ability to tell cities via movement.    */
  524. X  #define STORMS        /* have storms strike fleets            */
  525. X  #define VULCANIZE    /* add in volcano eruptions....            */
  526. X  #define PVULCAN 20    /* % chance of eruption each round (see above)    */
  527. X***************
  528. X*** 147,153 ****
  529. X  #define WARSHPCOST    20000L    /* cost to build one light warship    */
  530. X  #define MERSHPCOST    25000L    /* cost to build one light merchant    */
  531. X  #define GALSHPCOST    25000L    /* cost to build one light galley    */
  532. X! #define    SHIPCREW    100    /* full strength crew on a ship        */
  533. X  #define SHIPHOLD    100L    /* storage space of a ship unit        */
  534. X  #define CITYLIMIT    8L    /* % of npc pop in sctr before => city    */
  535. X  #define CITYPERCENT    20L    /* % of npc pop able to be in cities    */
  536. X--- 165,172 ----
  537. X  #define WARSHPCOST    20000L    /* cost to build one light warship    */
  538. X  #define MERSHPCOST    25000L    /* cost to build one light merchant    */
  539. X  #define GALSHPCOST    25000L    /* cost to build one light galley    */
  540. X! #define N_CITYCOST    4    /* move lost in (un)loading in cities    */
  541. X! #define SHIPCREW    100    /* full strength crew on a ship        */
  542. X  #define SHIPHOLD    100L    /* storage space of a ship unit        */
  543. X  #define CITYLIMIT    8L    /* % of npc pop in sctr before => city    */
  544. X  #define CITYPERCENT    20L    /* % of npc pop able to be in cities    */
  545. X*** odata.h    Sat Aug 26 19:04:06 1989
  546. X--- data.h    Sat Aug 26 19:04:15 1989
  547. X***************
  548. X*** 18,23 ****
  549. X--- 18,28 ----
  550. X  #define    FALSE        0
  551. X  #endif
  552. X  
  553. X+ /* definitions for screen redrawing */
  554. X+ #define    DONE    0
  555. X+ #define    PART    1
  556. X+ #define    FULL    2
  557. X+ 
  558. X  #define    SCREEN_X_SIZE    (( COLS - 21) / 2)    /* divide by two as only 1/2 
  559. X                             sectors will be shown */
  560. X  #define    SCREEN_Y_SIZE    ( LINES - 5 )
  561. X***************
  562. X*** 606,612 ****
  563. X  extern long    get_number(), solds_in_sector(),defaultunit();
  564. X  
  565. X  extern int    move_file(), land_2reachp(), land_reachp(), canbeseen();
  566. X! extern int    water_reachp(), markok(), is_habitable();
  567. X  extern int    units_in_sector(), num_powers(), tofood();
  568. X  extern int    get_god(), flightcost(), todigit(), getclass(), startcost();
  569. X  extern int    water_2reachp(),tg_ok(), readmap(), avian();
  570. X--- 611,617 ----
  571. X  extern long    get_number(), solds_in_sector(),defaultunit();
  572. X  
  573. X  extern int    move_file(), land_2reachp(), land_reachp(), canbeseen();
  574. X! extern int    water_reachp(), markok(), is_habitable(), parse();
  575. X  extern int    units_in_sector(), num_powers(), tofood();
  576. X  extern int    get_god(), flightcost(), todigit(), getclass(), startcost();
  577. X  extern int    water_2reachp(),tg_ok(), readmap(), avian();
  578. X***************
  579. X*** 623,629 ****
  580. X  extern struct    s_sector *rand_sector();
  581. X  extern void    subgships(),submships(),subwships(),getspace(),sackem();
  582. X  extern void    sleep(), whatcansee(), reset_god(), get_nname(), camp_info();
  583. X! extern void    main(), makebottom(), parse(), makeside(), check_mail();
  584. X  extern void    checkout(),copyscreen(),bye(),credits(),init_hasseen();
  585. X  extern void    combinearmies(),change_status(),reducearmy(),splitarmy();
  586. X  extern void    errormsg(), clear_bottom(), addgroup(),ext_cmd();
  587. X--- 628,634 ----
  588. X  extern struct    s_sector *rand_sector();
  589. X  extern void    subgships(),submships(),subwships(),getspace(),sackem();
  590. X  extern void    sleep(), whatcansee(), reset_god(), get_nname(), camp_info();
  591. X! extern void    main(), makebottom(), makeside(), check_mail();
  592. X  extern void    checkout(),copyscreen(),bye(),credits(),init_hasseen();
  593. X  extern void    combinearmies(),change_status(),reducearmy(),splitarmy();
  594. X  extern void    errormsg(), clear_bottom(), addgroup(),ext_cmd();
  595. X*** oextcmds.c    Sat Aug 26 19:04:06 1989
  596. X--- extcmds.c    Sat Aug 26 19:04:15 1989
  597. X***************
  598. X*** 320,326 ****
  599. X  {
  600. X      mvaddstr(LINES-1, 0, str);
  601. X      clrtoeol();
  602. X!     mvaddstr(LINES-1, COLS-20, "PRESS ANY KEY");
  603. X      beep();
  604. X      refresh();
  605. X      getch();
  606. X--- 320,326 ----
  607. X  {
  608. X      mvaddstr(LINES-1, 0, str);
  609. X      clrtoeol();
  610. X!     mvaddstr(LINES-1, COLS-16, "PRESS ANY KEY");
  611. X      beep();
  612. X      refresh();
  613. X      getch();
  614. X*** omakeworl.c    Sat Aug 26 19:04:07 1989
  615. X--- makeworl.c    Sat Aug 26 19:04:16 1989
  616. X***************
  617. X*** 12,18 ****
  618. X  
  619. X  /*Create a world*/
  620. X  
  621. X- /*DEFINE TEMPORARY VARIABLES FROM MAKEFILE*/
  622. X  #include <ctype.h>
  623. X  #include <stdio.h>
  624. X  #include <pwd.h>
  625. X--- 12,17 ----
  626. X***************
  627. X*** 90,109 ****
  628. X      mvaddstr(2,5,"Genesis begins...  Your super user login will be 'god'.");
  629. X      mvaddstr(3,0,"Non-player countries will be read in from the file 'nations',");
  630. X      mvaddstr(4,0,"and will have the same password as god, which you will soon set.");
  631. X!     mvaddstr(5,0,"     To add players after building:  conqrun -a");
  632. X      if (strcmp(datadir,"[default]")!=0)
  633. X          printw(" -d %s", datadir);
  634. X      addch('.');
  635. X  
  636. X!     newmsg("..Zero out extraneous files from prior games");
  637. X      /* flush out beginning input */
  638. X-     while(getch()!='\n') ;
  639. X      sprintf(newstring,"rm -f %s* %s* %s* %s* %s %s 2> /dev/null",
  640. X          exefile, msgfile, newsfile, isonfile, tradefile, timefile);
  641. X      system(newstring);
  642. X!     newerror("....Initialize the nation structures");
  643. X      zeroworld();
  644. X!     newerror("Initialization complete:  And there was light....");
  645. X  
  646. X      valid=FALSE;
  647. X      while(valid==FALSE) {            /* password routine */
  648. X--- 89,108 ----
  649. X      mvaddstr(2,5,"Genesis begins...  Your super user login will be 'god'.");
  650. X      mvaddstr(3,0,"Non-player countries will be read in from the file 'nations',");
  651. X      mvaddstr(4,0,"and will have the same password as god, which you will soon set.");
  652. X!     mvaddstr(5,0,"     To add players after world creation:  conqrun -a");
  653. X      if (strcmp(datadir,"[default]")!=0)
  654. X          printw(" -d %s", datadir);
  655. X      addch('.');
  656. X  
  657. X!     newerror("..Zero out extraneous files from prior games");
  658. X      /* flush out beginning input */
  659. X      sprintf(newstring,"rm -f %s* %s* %s* %s* %s %s 2> /dev/null",
  660. X          exefile, msgfile, newsfile, isonfile, tradefile, timefile);
  661. X      system(newstring);
  662. X!     newmsg("....Initialize the nation structures");
  663. X      zeroworld();
  664. X!     newmsg("Initialization complete:  And there was light....");
  665. X!     sleep(1);
  666. X  
  667. X      valid=FALSE;
  668. X      while(valid==FALSE) {            /* password routine */
  669. X***************
  670. X*** 130,143 ****
  671. X      strncpy(ntn[0].passwd,crypt(passwd,SALT),PASSLTH);
  672. X      
  673. X      /* finally ask for the secondary administrator */
  674. X!     mvaddstr(7,0,"You may now designate an alternate ruler for this world.");
  675. X      while(TRUE) {
  676. X!         mvaddstr(8,0,"What demi-god shall rule this world? ");
  677. X          clrtoeol();
  678. X          refresh();
  679. X          get_nname( newstring );
  680. X          if (strlen(newstring)==0) {
  681. X!             newerror("God blesses this world with his presense!");
  682. X              (void) strcpy(ntn[0].leader,LOGIN);
  683. X              mvaddstr(7,0,"Demi-God: [none]");
  684. X              clrtoeol();
  685. X--- 129,144 ----
  686. X      strncpy(ntn[0].passwd,crypt(passwd,SALT),PASSLTH);
  687. X      
  688. X      /* finally ask for the secondary administrator */
  689. X!     mvaddstr(7,0,"You may designate an other user as an alternate \"god\" for this world.");
  690. X!     mvaddstr(8,0,"Enter System Login of alternate user or hit return to continue.");
  691. X      while(TRUE) {
  692. X!         mvaddstr(9,0,"What demi-god shall co-rule this world: ");
  693. X          clrtoeol();
  694. X          refresh();
  695. X          get_nname( newstring );
  696. X          if (strlen(newstring)==0) {
  697. X!             newmsg("God will personally rule this world!!!");
  698. X!             sleep(1);
  699. X              (void) strcpy(ntn[0].leader,LOGIN);
  700. X              mvaddstr(7,0,"Demi-God: [none]");
  701. X              clrtoeol();
  702. X***************
  703. X*** 145,151 ****
  704. X          } else if (strlen(newstring) <= LEADERLTH) {
  705. X              if (getpwnam(newstring)!=NULL) {
  706. X                  sprintf(tempc,"The demi-god %s may administrate this new world.",newstring);
  707. X!                 newerror(tempc);
  708. X                  (void) strncpy(ntn[0].leader,newstring,LEADERLTH);
  709. X                  mvprintw(7,0,"Demi-God: %s",ntn[0].leader);
  710. X                  clrtoeol();
  711. X--- 146,152 ----
  712. X          } else if (strlen(newstring) <= LEADERLTH) {
  713. X              if (getpwnam(newstring)!=NULL) {
  714. X                  sprintf(tempc,"The demi-god %s may administrate this new world.",newstring);
  715. X!                 newmsg(tempc);
  716. X                  (void) strncpy(ntn[0].leader,newstring,LEADERLTH);
  717. X                  mvprintw(7,0,"Demi-God: %s",ntn[0].leader);
  718. X                  clrtoeol();
  719. X***************
  720. X*** 252,258 ****
  721. X      mvaddstr(14,0,"known as god) decreed 'conqrun -m'!!!");
  722. X  
  723. X      /*initialize variables */
  724. X!     newerror("Day 1... And the variables were initialized.");
  725. X      move(11,0);
  726. X      clrtoeol();
  727. X      move(12,0);
  728. X--- 253,260 ----
  729. X      mvaddstr(14,0,"known as god) decreed 'conqrun -m'!!!");
  730. X  
  731. X      /*initialize variables */
  732. X!     newmsg("Day 1... And the variables were initialized.");
  733. X!     sleep(1);
  734. X      move(11,0);
  735. X      clrtoeol();
  736. X      move(12,0);
  737. X***************
  738. X*** 426,434 ****
  739. X      for(X=0;X<MAPX;X++) for(Y=0;Y<MAPY;Y++)
  740. X          if(type[X][Y] == WATER) chance++;
  741. X  
  742. X!     mvprintw(10,0,"Water: %d / %d sectors",chance,NUMSECTS);
  743. X      clrtoeol();
  744. X!     newerror("Day 2... God added water to the world");
  745. X  
  746. X      /*Newly added code to smooth the world out*/
  747. X      for(X=1;X<MAPX-1;X++) for(Y=1;Y<MAPY-1;Y++) {
  748. X--- 428,437 ----
  749. X      for(X=0;X<MAPX;X++) for(Y=0;Y<MAPY;Y++)
  750. X          if(type[X][Y] == WATER) chance++;
  751. X  
  752. X!     mvprintw(10,0,"Water .................  %d out of %d sectors",chance,NUMSECTS);
  753. X      clrtoeol();
  754. X!     newmsg("Day 2... God added water to the world");
  755. X!     sleep(1);
  756. X  
  757. X      /*Newly added code to smooth the world out*/
  758. X      for(X=1;X<MAPX-1;X++) for(Y=1;Y<MAPY-1;Y++) {
  759. X***************
  760. X*** 443,451 ****
  761. X      for(X=0;X<MAPX;X++) for(Y=0;Y<MAPY;Y++)
  762. X          if(type[X][Y] == WATER) chance++;
  763. X  
  764. X!     mvprintw(10,0,"Water: %d / %d sectors",chance,NUMSECTS);
  765. X      clrtoeol();
  766. X!     newerror("But God was not pleased... and smoothed the oceans.");
  767. X  
  768. X      /*Adjust world given sectors as land or sea, place vegetation,
  769. X      designation, and altitude */
  770. X--- 446,455 ----
  771. X      for(X=0;X<MAPX;X++) for(Y=0;Y<MAPY;Y++)
  772. X          if(type[X][Y] == WATER) chance++;
  773. X  
  774. X!     mvprintw(10,0,"Water .................  %d out of %d sectors",chance,NUMSECTS);
  775. X      clrtoeol();
  776. X!     newmsg("But God was not pleased... and smoothed the oceans.");
  777. X!     sleep(1);
  778. X  
  779. X      /*Adjust world given sectors as land or sea, place vegetation,
  780. X      designation, and altitude */
  781. X***************
  782. X*** 459,466 ****
  783. X      avvalue    /= 10000;
  784. X      nmountains    = NUMSECTS * avvalue;
  785. X      
  786. X!     mvprintw(11,0,"Hills and Mountains: %d",nmountains);
  787. X!     newerror("Day 3... God created hills and mountains");
  788. X  
  789. X      /* heuristic says that 5 is cutoff number to stop placing ranges */
  790. X      /* and 1 third of mountains are placed as random hills        */
  791. X--- 463,471 ----
  792. X      avvalue    /= 10000;
  793. X      nmountains    = NUMSECTS * avvalue;
  794. X      
  795. X!     mvprintw(11,0,"Hills and Mountains....  %d out of %d sectors",nmountains,NUMSECTS);
  796. X!     newmsg("Day 3... God created hills and mountains");
  797. X!     sleep(1);
  798. X  
  799. X      /* heuristic says that 5 is cutoff number to stop placing ranges */
  800. X      /* and 1 third of mountains are placed as random hills        */
  801. X***************
  802. X*** 658,664 ****
  803. X      nmountains = 10 * (END_NORMAL+1);
  804. X      for(i=0;i<=END_NORMAL;i++) nmountains -= ( *(tg_value+i) - '0');
  805. X  
  806. X!     newerror("Day 4... God placed the world's raw materials");
  807. X      for(y=0;y<MAPY;y++) for(x=0;x<MAPX;x++) {
  808. X  
  809. X          sptr = &sct[x][y];
  810. X--- 663,670 ----
  811. X      nmountains = 10 * (END_NORMAL+1);
  812. X      for(i=0;i<=END_NORMAL;i++) nmountains -= ( *(tg_value+i) - '0');
  813. X  
  814. X!     newmsg("Day 4... God placed the world's raw materials");
  815. X!     sleep(1);
  816. X      for(y=0;y<MAPY;y++) for(x=0;x<MAPX;x++) {
  817. X  
  818. X          sptr = &sct[x][y];
  819. X***************
  820. X*** 720,726 ****
  821. X      mvprintw(14,0,"fat ones, skinny ones, orange ones, turquois ones, bright blue ones.");
  822. X      mvprintw(15,0,"WAIT!!!  God has suddenly realized that smurfs were taking things");
  823. X      mvprintw(16,0,"too far and stopped creating new ones, and placed everybody on the map...");
  824. X!     newerror("Day 5... God decreed that world would be populated");
  825. X      move(14,0);
  826. X      clrtoeol();
  827. X      move(15,0);
  828. X--- 726,733 ----
  829. X      mvprintw(14,0,"fat ones, skinny ones, orange ones, turquois ones, bright blue ones.");
  830. X      mvprintw(15,0,"WAIT!!!  God has suddenly realized that smurfs were taking things");
  831. X      mvprintw(16,0,"too far and stopped creating new ones, and placed everybody on the map...");
  832. X!     newmsg("Day 5... God decreed that world would be populated");
  833. X!     sleep(1);
  834. X      move(14,0);
  835. X      clrtoeol();
  836. X      move(15,0);
  837. X***************
  838. X*** 731,738 ****
  839. X      MERCMEN = ST_MMEN;
  840. X      MERCATT = ST_MATT;
  841. X      MERCDEF = ST_MDEF;
  842. X!     newerror("Day 6... God, believing in long weekends, went and got smashed");
  843. X!     newerror("Day 7... God rested (to get rid of that stupid hangover)");
  844. X      sprintf(newstring," ...Log in via 'conquer -n god");
  845. X      if (strcmp(datadir,"[default]")!=0) {
  846. X          strcat(newstring," -d ");
  847. X--- 738,747 ----
  848. X      MERCMEN = ST_MMEN;
  849. X      MERCATT = ST_MATT;
  850. X      MERCDEF = ST_MDEF;
  851. X!     newmsg("Day 6... God, believing in long weekends, went and got smashed");
  852. X!     sleep(1);
  853. X!     newmsg("Day 7... God rested (to get rid of that stupid hangover)");
  854. X!     sleep(1);
  855. X      sprintf(newstring," ...Log in via 'conquer -n god");
  856. X      if (strcmp(datadir,"[default]")!=0) {
  857. X          strcat(newstring," -d ");
  858. X***************
  859. X*** 920,927 ****
  860. X              } else    if(nnomads < MAXARM )    nnomads++;
  861. X              break;
  862. X      }
  863. X!     mvprintw(13,0,"Placing %d lizards, %d pirates, %d savages, and %d nomads",
  864. X!         nlizards,npirates,nbarbarians,nnomads);
  865. X      clrtoeol();
  866. X      refresh();
  867. X  
  868. X--- 929,935 ----
  869. X              } else    if(nnomads < MAXARM )    nnomads++;
  870. X              break;
  871. X      }
  872. X!     mvprintw(13,0,"Placing %d lizard cities, %d pirates, %d savages, and %d nomad tribes",nlizards,npirates,nbarbarians,nnomads);
  873. X      clrtoeol();
  874. X      refresh();
  875. X  
  876. X***************
  877. X*** 1090,1096 ****
  878. X          }
  879. X      }
  880. X  
  881. X!     newerror("... All random population and monsters placed");
  882. X  #endif MONSTER
  883. X  
  884. X      for (i=0;i<MAXHELP;i++) {
  885. X--- 1098,1105 ----
  886. X          }
  887. X      }
  888. X  
  889. X!     newmsg("... All random population and monsters placed");
  890. X!     sleep(1);
  891. X  #endif MONSTER
  892. X  
  893. X      for (i=0;i<MAXHELP;i++) {
  894. X***************
  895. X*** 1108,1114 ****
  896. X      refresh();
  897. X      while( ((i=getch()) != 'y')&&(i != 'n') ) ;
  898. X      if( i!='y' ) {
  899. X!         newerror("OK; no NPC nations used");
  900. X          return;
  901. X      }
  902. X      if((fp=fopen(npcsfile,"r"))==NULL) {
  903. X--- 1117,1124 ----
  904. X      refresh();
  905. X      while( ((i=getch()) != 'y')&&(i != 'n') ) ;
  906. X      if( i!='y' ) {
  907. X!         newmsg("OK; no NPC nations used");
  908. X!         sleep(1);
  909. X          return;
  910. X      }
  911. X      if((fp=fopen(npcsfile,"r"))==NULL) {
  912. X***************
  913. X*** 1121,1138 ****
  914. X              if ((fp=fopen(line,"r"))==NULL) {
  915. X                  newerror("Cannot read nation file... no NPCs added");
  916. X                  return;
  917. X!             } else newerror("OK; default nations used");
  918. X          } else {
  919. X!             newerror("OK; no NPC nations used");
  920. X              return;
  921. X          }
  922. X      }
  923. X  
  924. X      cnum=1;
  925. X!     mvprintw(14,0,"ADDING NATIONS:");
  926. X      refresh();
  927. X      xpos = 16;
  928. X!     ypos = 14;
  929. X      while(fgets(line,LINELTH,fp)!=NULL) {
  930. X          /*read and parse a new line*/
  931. X          if(line[0]!='#') {
  932. X--- 1131,1149 ----
  933. X              if ((fp=fopen(line,"r"))==NULL) {
  934. X                  newerror("Cannot read nation file... no NPCs added");
  935. X                  return;
  936. X!             } else newmsg("OK; default nations used");
  937. X          } else {
  938. X!             newmsg("OK; no NPC nations used");
  939. X!             sleep(1);
  940. X              return;
  941. X          }
  942. X      }
  943. X  
  944. X      cnum=1;
  945. X!     mvprintw(15,0,"ADDING NATIONS:");
  946. X      refresh();
  947. X      xpos = 16;
  948. X!     ypos = 15;
  949. X      while(fgets(line,LINELTH,fp)!=NULL) {
  950. X          /*read and parse a new line*/
  951. X          if(line[0]!='#') {
  952. X***************
  953. X*** 1223,1228 ****
  954. X          }
  955. X      }
  956. X      att_base();    /* get nation attributes */
  957. X!     newerror("All NPC nations placed");
  958. X  #endif NPC
  959. X  }
  960. X--- 1234,1240 ----
  961. X          }
  962. X      }
  963. X      att_base();    /* get nation attributes */
  964. X!     newmsg("All NPC nations placed");
  965. X!     sleep(1);
  966. X  #endif NPC
  967. X  }
  968. X*** ocexecute.c    Sat Aug 26 19:04:06 1989
  969. X--- cexecute.c    Sat Aug 26 19:04:16 1989
  970. X***************
  971. X*** 248,254 ****
  972. X              printf("\nERROR ON MAGIC READ country=%d %ld != %ld (or of %ld)",country,longvar,curntn->powers,long2var);
  973. X              getchar();
  974. X              }
  975. X!             exenewmgk(long2var);
  976. X              long2var=0;
  977. X              break;
  978. X          }
  979. X--- 248,258 ----
  980. X              printf("\nERROR ON MAGIC READ country=%d %ld != %ld (or of %ld)",country,longvar,curntn->powers,long2var);
  981. X              getchar();
  982. X              }
  983. X!             for(armynum=0;armynum<=MAXPOWER;armynum++) {
  984. X!                 longvar = 1L << armynum;
  985. X!                 if (longvar & long2var)
  986. X!                     exenewmgk(longvar);
  987. X!             }
  988. X              long2var=0;
  989. X              break;
  990. X          }
  991. X*** oforms.c    Sat Aug 26 19:04:06 1989
  992. X--- forms.c    Sat Aug 26 19:04:16 1989
  993. X***************
  994. X*** 788,794 ****
  995. X  
  996. X      /* quick exit on invalid entry */
  997. X      if (i<0 || i>MAXHELP) {
  998. X!         redraw=FALSE;
  999. X          makebottom();
  1000. X          return;
  1001. X      }
  1002. X--- 788,794 ----
  1003. X  
  1004. X      /* quick exit on invalid entry */
  1005. X      if (i<0 || i>MAXHELP) {
  1006. X!         redraw=DONE;
  1007. X          makebottom();
  1008. X          return;
  1009. X      }
  1010. X***************
  1011. X*** 863,885 ****
  1012. X  {
  1013. X      int lineno;
  1014. X      FILE *fp, *fopen();
  1015. X!     int newpage,choice,done=FALSE;
  1016. X!     short pagenum=1;
  1017. X      int i,ydist,xdist;
  1018. X      char line[LINELTH],name[FILELTH];
  1019. X! 
  1020. X      /* check to make sure that there are newspapers */
  1021. X      if (TURN==0) {
  1022. X          clear_bottom(0);
  1023. X          errormsg("no news to read");
  1024. X!         redraw=FALSE;
  1025. X          makebottom();
  1026. X          return;
  1027. X      }
  1028. X  
  1029. X      clear_bottom(0);
  1030. X      ydist=LINES-3;
  1031. X      xdist=0;
  1032. X      /* check for all newspapers up until the current turn */
  1033. X      for (i=TURN-1;i>=0 && i>=TURN-MAXNEWS;i--) {
  1034. X          sprintf(line,"   %d) %s of Year %d",TURN-i,
  1035. X--- 863,891 ----
  1036. X  {
  1037. X      int lineno;
  1038. X      FILE *fp, *fopen();
  1039. X!     int newpage,choice,done;
  1040. X!     short pagenum,subpage;
  1041. X      int i,ydist,xdist;
  1042. X      char line[LINELTH],name[FILELTH];
  1043. X!     int readold;
  1044. X!     int c;
  1045. X!     
  1046. X      /* check to make sure that there are newspapers */
  1047. X      if (TURN==0) {
  1048. X          clear_bottom(0);
  1049. X          errormsg("no news to read");
  1050. X!         redraw=DONE;
  1051. X          makebottom();
  1052. X          return;
  1053. X      }
  1054. X  
  1055. X+     /* set to 1 if news already read and redraw is needed */
  1056. X+     readold=0;
  1057. X+     readoldp:   /* label to jump if reading old pages */
  1058. X      clear_bottom(0);
  1059. X      ydist=LINES-3;
  1060. X      xdist=0;
  1061. X+ 
  1062. X      /* check for all newspapers up until the current turn */
  1063. X      for (i=TURN-1;i>=0 && i>=TURN-MAXNEWS;i--) {
  1064. X          sprintf(line,"   %d) %s of Year %d",TURN-i,
  1065. X***************
  1066. X*** 895,935 ****
  1067. X      mvaddstr(LINES-4,0,"Read Which Newspaper:");
  1068. X      standend();
  1069. X      refresh();
  1070. X      /* get the choice */
  1071. X      choice = getch() - '0';
  1072. X      /* make sure the choice is valid */
  1073. X      if (choice<1 || choice > MAXNEWS) {
  1074. X          makebottom();
  1075. X!         redraw=FALSE;
  1076. X          return;
  1077. X      }
  1078. X! 
  1079. X      sprintf(name,"%s%d",newsfile,TURN-choice);
  1080. X      if ((fp=fopen(name,"r"))==NULL) {
  1081. X          clear_bottom(0);
  1082. X          sprintf(line,"unable to open news file <%s>",name);
  1083. X          errormsg(line);
  1084. X!         redraw=FALSE;
  1085. X          makebottom();
  1086. X          return;
  1087. X      }
  1088. X  
  1089. X      /*open and read one page */
  1090. X      newpage=FALSE;
  1091. X      line[0]='\0';
  1092. X      strcpy(name,"");
  1093. X! 
  1094. X!     /*clear out any proceeding blanks*/
  1095. X!     while(done==FALSE && strlen(name)==0)
  1096. X          if(fgets(name,80,fp)==NULL) done=TRUE;
  1097. X  
  1098. X!     while(done==FALSE){
  1099. X          if(newpage==FALSE){
  1100. X              clear();
  1101. X              lineno=5;
  1102. X              newpage=TRUE;
  1103. X              standout();
  1104. X!             mvprintw(0,23,"CONQUER NEWS REPORT  page %d",pagenum);
  1105. X              mvprintw(1,28,"%s of Year %d",PSEASON(TURN-choice),YEAR(TURN-choice));
  1106. X              mvprintw(3,37-strlen(name)/2,"%s",name+2);
  1107. X              standend();
  1108. X--- 901,960 ----
  1109. X      mvaddstr(LINES-4,0,"Read Which Newspaper:");
  1110. X      standend();
  1111. X      refresh();
  1112. X+ 
  1113. X      /* get the choice */
  1114. X      choice = getch() - '0';
  1115. X      /* make sure the choice is valid */
  1116. X      if (choice<1 || choice > MAXNEWS) {
  1117. X+             if (readold)
  1118. X+                    return;
  1119. X          makebottom();
  1120. X!         redraw=DONE;
  1121. X          return;
  1122. X      }
  1123. X!     /* select page to read */
  1124. X!     pagenum=1;
  1125. X!     backpage:    /* label for reading previous pages. pagenum set to page */
  1126. X      sprintf(name,"%s%d",newsfile,TURN-choice);
  1127. X      if ((fp=fopen(name,"r"))==NULL) {
  1128. X          clear_bottom(0);
  1129. X          sprintf(line,"unable to open news file <%s>",name);
  1130. X          errormsg(line);
  1131. X!         if (readold)
  1132. X!           return;
  1133. X!         redraw=DONE;
  1134. X          makebottom();
  1135. X          return;
  1136. X      }
  1137. X  
  1138. X      /*open and read one page */
  1139. X+      forpage:  /* label for reading forward pages. pagenum set to page */
  1140. X+     subpage=1;
  1141. X      newpage=FALSE;
  1142. X      line[0]='\0';
  1143. X      strcpy(name,"");
  1144. X!     /* reading to correct page */
  1145. X!     i=0;
  1146. X!     done=FALSE;
  1147. X!     while(done==FALSE && i<pagenum) {
  1148. X          if(fgets(name,80,fp)==NULL) done=TRUE;
  1149. X+         if(name[0]!='\0' && name[1]!='.' && name[1]!=':')
  1150. X+             i=todigit(name[0]);
  1151. X+     }
  1152. X+     if (i!=pagenum) {
  1153. X+         errormsg("Page not found");
  1154. X+         pagenum=1;
  1155. X+     } else {
  1156. X+         pagenum=i;
  1157. X+     }
  1158. X  
  1159. X!     do {
  1160. X          if(newpage==FALSE){
  1161. X              clear();
  1162. X              lineno=5;
  1163. X              newpage=TRUE;
  1164. X              standout();
  1165. X!             mvprintw(0,21,"CONQUER NEWS REPORT  Page %d.%d",pagenum,subpage++);
  1166. X              mvprintw(1,28,"%s of Year %d",PSEASON(TURN-choice),YEAR(TURN-choice));
  1167. X              mvprintw(3,37-strlen(name)/2,"%s",name+2);
  1168. X              standend();
  1169. X***************
  1170. X*** 940,953 ****
  1171. X              }
  1172. X          } else if(fgets(line,80,fp)==NULL) done=TRUE;
  1173. X          else {
  1174. X!             if(line[1]!='.') {
  1175. X                  strcpy(name,line);
  1176. X                  newpage=FALSE;
  1177. X!                 pagenum++;
  1178. X              } else {
  1179. X                  if(todigit(line[0])!=pagenum) {
  1180. X                      newpage=FALSE;
  1181. X                      pagenum=todigit(line[0]);
  1182. X                  }
  1183. X                  else if(lineno>LINES-4) newpage=FALSE;
  1184. X                  else if(strlen(line)>2) {
  1185. X--- 965,980 ----
  1186. X              }
  1187. X          } else if(fgets(line,80,fp)==NULL) done=TRUE;
  1188. X          else {
  1189. X!             if(line[1]!='.'  && line[1]!=':') {
  1190. X                  strcpy(name,line);
  1191. X                  newpage=FALSE;
  1192. X!                 pagenum=todigit(line[0]);
  1193. X!                 subpage=1;
  1194. X              } else {
  1195. X                  if(todigit(line[0])!=pagenum) {
  1196. X                      newpage=FALSE;
  1197. X                      pagenum=todigit(line[0]);
  1198. X+                     subpage=1;
  1199. X                  }
  1200. X                  else if(lineno>LINES-4) newpage=FALSE;
  1201. X                  else if(strlen(line)>2) {
  1202. X***************
  1203. X*** 959,970 ****
  1204. X          if(newpage==FALSE||done==TRUE){
  1205. X              standout();
  1206. X              /* constants since news is 80 col format */
  1207. X!             mvaddstr(LINES-2,24,"HIT ANY KEY TO CONTINUE");
  1208. X!             mvaddstr(LINES-1,25,"TO END NEWS HIT SPACE");
  1209. X              standend();
  1210. X              refresh();
  1211. X!             if(getch()==' ') done=TRUE;
  1212. X          }
  1213. X!     }
  1214. X      fclose(fp);
  1215. X  }
  1216. X--- 986,1045 ----
  1217. X          if(newpage==FALSE||done==TRUE){
  1218. X              standout();
  1219. X              /* constants since news is 80 col format */
  1220. X!             mvaddstr(LINES-2,4,"N=next page, P=previous page, 1-5=jump to page, O=Read other news");
  1221. X!             mvaddstr(LINES-1,12,"ANY OTHER KEY TO ADVANCE -- TO END NEWS HIT SPACE");
  1222. X              standend();
  1223. X              refresh();
  1224. X!             stayhere:
  1225. X!             c=getch();
  1226. X!             switch (c) {
  1227. X!             case 'N':
  1228. X!             case 'n':
  1229. X!                 /* go forward a page */
  1230. X!                 if (subpage!=1 && done!=TRUE) {
  1231. X!                     pagenum++;
  1232. X!                     if (pagenum>5) pagenum=5;
  1233. X!                     goto forpage;
  1234. X!                 } else if (done==TRUE) {
  1235. X!                     goto stayhere;
  1236. X!                 }
  1237. X!                 break;
  1238. X!             case 'P':
  1239. X!             case 'p':
  1240. X!                 /* go backward a page */
  1241. X!                 if (subpage==1) pagenum--;
  1242. X!                 pagenum--;
  1243. X!                 if (pagenum<1) pagenum=1;
  1244. X!                 fclose(fp);
  1245. X!                 goto backpage;
  1246. X!                 break;
  1247. X!             case '1':
  1248. X!             case '2':
  1249. X!             case '3':
  1250. X!             case '4':
  1251. X!             case '5':
  1252. X!                 /* goto a specific page */
  1253. X!                 i=todigit(c);
  1254. X!                 if (i<=pagenum) {
  1255. X!                     pagenum=i;
  1256. X!                     fclose(fp);
  1257. X!                     goto backpage;
  1258. X!                 } else {
  1259. X!                     pagenum=i;
  1260. X!                     goto forpage;
  1261. X!                 }
  1262. X!                 break;
  1263. X!             case ' ':
  1264. X!                 done=TRUE;
  1265. X!                 break;
  1266. X!             case 'O':
  1267. X!             case 'o':
  1268. X!                 readold=1;
  1269. X!                 fclose(fp);
  1270. X!                 goto readoldp;
  1271. X!                 break;
  1272. X!             }
  1273. X          }
  1274. X!     } while (done==FALSE);
  1275. X      fclose(fp);
  1276. X  }
  1277. X*** oreports.c    Sat Aug 26 19:04:08 1989
  1278. X--- reports.c    Sat Aug 26 19:04:17 1989
  1279. X***************
  1280. X*** 58,64 ****
  1281. X                  (P_AXLOC==XREAL && P_AYLOC==YREAL)))
  1282. X                  men=TRUE;
  1283. X          if (!men) {
  1284. X!             redraw=FALSE;
  1285. X              clear_bottom(0);
  1286. X              errormsg("no armies to display");
  1287. X              makebottom();
  1288. X--- 58,64 ----
  1289. X                  (P_AXLOC==XREAL && P_AYLOC==YREAL)))
  1290. X                  men=TRUE;
  1291. X          if (!men) {
  1292. X!             redraw=DONE;
  1293. X              clear_bottom(0);
  1294. X              errormsg("no armies to display");
  1295. X              makebottom();
  1296. X***************
  1297. X*** 78,86 ****
  1298. X                  if (count%MAXINROW==0) {
  1299. X                      /* diplay header information */
  1300. X                      mvaddstr(ypos+1,0,"soldiers  :");
  1301. X!                     mvaddstr(ypos+2,0,"movement  :");
  1302. X!                     mvaddstr(ypos+3,0,"x location:");
  1303. X!                     mvaddstr(ypos+4,0,"y location:");
  1304. X                      mvaddstr(ypos+5,0,"status    :");
  1305. X                      mvaddstr(ypos+6,0,"unit type :");
  1306. X                      mvaddstr(ypos+7,0,"cost/turn :");
  1307. X--- 78,86 ----
  1308. X                  if (count%MAXINROW==0) {
  1309. X                      /* diplay header information */
  1310. X                      mvaddstr(ypos+1,0,"soldiers  :");
  1311. X!                     mvaddstr(ypos+2,0,"x location:");
  1312. X!                     mvaddstr(ypos+3,0,"y location:");
  1313. X!                     mvaddstr(ypos+4,0,"movement  :");
  1314. X                      mvaddstr(ypos+5,0,"status    :");
  1315. X                      mvaddstr(ypos+6,0,"unit type :");
  1316. X                      mvaddstr(ypos+7,0,"cost/turn :");
  1317. X***************
  1318. X*** 90,98 ****
  1319. X                  mvprintw(ypos,xpos,"%d:",armynum);
  1320. X                  standend();
  1321. X                  mvprintw(ypos+1,xpos,"%ld",P_ASOLD);
  1322. X!                 mvprintw(ypos+2,xpos,"%d",P_AMOVE);
  1323. X!                 mvprintw(ypos+3,xpos,"%d",(int)P_AXLOC);
  1324. X!                 mvprintw(ypos+4,xpos,"%d",(int)P_AYLOC);
  1325. X                  if(P_ASTAT>=NUMSTATUS)
  1326. X                  mvprintw(ypos+5,xpos,"group %d",P_ASTAT-NUMSTATUS);
  1327. X                  else
  1328. X--- 90,98 ----
  1329. X                  mvprintw(ypos,xpos,"%d:",armynum);
  1330. X                  standend();
  1331. X                  mvprintw(ypos+1,xpos,"%ld",P_ASOLD);
  1332. X!                 mvprintw(ypos+2,xpos,"%d",(int)P_AXLOC);
  1333. X!                 mvprintw(ypos+3,xpos,"%d",(int)P_AYLOC);
  1334. X!                 mvprintw(ypos+4,xpos,"%d",P_AMOVE);
  1335. X                  if(P_ASTAT>=NUMSTATUS)
  1336. X                  mvprintw(ypos+5,xpos,"group %d",P_ASTAT-NUMSTATUS);
  1337. X                  else
  1338. X***************
  1339. X*** 491,497 ****
  1340. X          if(count==0){
  1341. X              clear_bottom(0);
  1342. X              errormsg("no navies");
  1343. X!             redraw=FALSE;
  1344. X              makebottom();
  1345. X              return;
  1346. X          }
  1347. X--- 491,497 ----
  1348. X          if(count==0){
  1349. X              clear_bottom(0);
  1350. X              errormsg("no navies");
  1351. X!             redraw=DONE;
  1352. X              makebottom();
  1353. X              return;
  1354. X          }
  1355. X*** ocombat.c    Sat Aug 26 19:04:06 1989
  1356. X--- combat.c    Sat Aug 26 19:04:17 1989
  1357. X***************
  1358. X*** 46,54 ****
  1359. X--- 46,57 ----
  1360. X      register int i,j;
  1361. X      char    **fought;         /* TRUE if already fought in sctr */
  1362. X      int    temp,ctry;
  1363. X+     int    initialized=FALSE;    /* TRUE if arrays initialized */
  1364. X      short    armynum,nvynum;
  1365. X      int    valid;
  1366. X      int    count=0;
  1367. X+     struct  s_nation *nptr;
  1368. X+     struct  army     *aptr;
  1369. X  
  1370. X      fought = (char **) m2alloc(MAPX,MAPY,sizeof(char));
  1371. X  
  1372. X***************
  1373. X*** 61,85 ****
  1374. X  
  1375. X      for(ctry=NTOTAL-1;ctry>0;ctry--) if(isactive(ntn[ctry].active)) {
  1376. X  
  1377. X          /*army combat*/
  1378. X!         for(j=0;j<MAXARM;j++)
  1379. X!             if((ntn[ctry].arm[j].sold>0)
  1380. X!             &&(ntn[ctry].arm[j].stat>=ATTACK)
  1381. X!             &&(ntn[ctry].arm[j].stat<=SORTIE
  1382. X!               ||ntn[ctry].arm[j].stat>=NUMSTATUS)
  1383. X!             &&(fought[ntn[ctry].arm[j].xloc][ntn[ctry].arm[j].yloc]==0)){
  1384. X  
  1385. X              /* someone can initiate combat in xspot,yspot */
  1386. X!             xspot=ntn[ctry].arm[j].xloc;
  1387. X!             yspot=ntn[ctry].arm[j].yloc;
  1388. X              fought[xspot][yspot]=TRUE;
  1389. X  
  1390. X              /*initialize matrix*/
  1391. X!             for(temp=0;temp<MGKNUM;temp++){
  1392. X!                 unit[temp]=(-1);
  1393. X!                 owner[temp]=(-1);
  1394. X!                 side[temp]=NTRL;
  1395. X!                 troops[temp]=0;
  1396. X              }
  1397. X  
  1398. X              /*check all armies in sector and add to matrix*/
  1399. X--- 64,92 ----
  1400. X  
  1401. X      for(ctry=NTOTAL-1;ctry>0;ctry--) if(isactive(ntn[ctry].active)) {
  1402. X  
  1403. X+         nptr = &ntn[ctry];
  1404. X+ 
  1405. X          /*army combat*/
  1406. X!         for(j=0;j<MAXARM;j++) {
  1407. X!             aptr = &nptr->arm[j];
  1408. X!             if((aptr->sold>0)
  1409. X!             &&(aptr->stat>=ATTACK)
  1410. X!             &&(aptr->stat<=SORTIE||aptr->stat>=NUMSTATUS)
  1411. X!             &&(!fought[aptr->xloc][aptr->yloc])){
  1412. X  
  1413. X              /* someone can initiate combat in xspot,yspot */
  1414. X!             xspot=aptr->xloc;
  1415. X!             yspot=aptr->yloc;
  1416. X              fought[xspot][yspot]=TRUE;
  1417. X  
  1418. X              /*initialize matrix*/
  1419. X!             if( !initialized ) {
  1420. X!                 for(temp=0;temp<MGKNUM;temp++){
  1421. X!                     unit[temp]=owner[temp]=(-1);
  1422. X!                     side[temp]=NTRL;
  1423. X!                     troops[temp]=0;
  1424. X!                 }
  1425. X!                 initialized=TRUE;
  1426. X              }
  1427. X  
  1428. X              /*check all armies in sector and add to matrix*/
  1429. X***************
  1430. X*** 95,101 ****
  1431. X              &&(AYLOC==yspot)
  1432. X              &&(count<MGKNUM)) {
  1433. X                  if((country!=ctry)
  1434. X!                 &&(ntn[ctry].dstatus[country]>HOSTILE)) {
  1435. X                      valid=TRUE;
  1436. X                      if( sct[xspot][yspot].owner==ctry ) {
  1437. X                          dnation=ctry;
  1438. X--- 102,108 ----
  1439. X              &&(AYLOC==yspot)
  1440. X              &&(count<MGKNUM)) {
  1441. X                  if((country!=ctry)
  1442. X!                 &&(nptr->dstatus[country]>HOSTILE)) {
  1443. X                      valid=TRUE;
  1444. X                      if( sct[xspot][yspot].owner==ctry ) {
  1445. X                          dnation=ctry;
  1446. X***************
  1447. X*** 114,138 ****
  1448. X                  count++;
  1449. X              }
  1450. X  
  1451. X!             if(valid==TRUE) fight();
  1452. X          }
  1453. X  
  1454. X          /*navy combat*/
  1455. X          for(j=0;j<MAXNAVY;j++)
  1456. X!         if((ntn[ctry].nvy[j].warships!=0)
  1457. X! &&(fought[ntn[ctry].nvy[j].xloc][ntn[ctry].nvy[j].yloc]==0)
  1458. X! &&(sct[ntn[ctry].nvy[j].xloc][ntn[ctry].nvy[j].yloc].altitude==WATER)){
  1459. X  
  1460. X!             xspot=ntn[ctry].nvy[j].xloc;
  1461. X!             yspot=ntn[ctry].nvy[j].yloc;
  1462. X              fought[xspot][yspot]=1;
  1463. X  
  1464. X              /*initialize matrix*/
  1465. X!             for(temp=0;temp<MGKNUM;temp++){
  1466. X!                 unit[temp]=(-1);
  1467. X!                 owner[temp]=(-1);
  1468. X!                 side[temp]=NTRL;
  1469. X!                 troops[temp]=0;
  1470. X              }
  1471. X  
  1472. X              /*check all fleets in 2 sector range and add to matrix*/
  1473. X--- 121,151 ----
  1474. X                  count++;
  1475. X              }
  1476. X  
  1477. X!             if(valid==TRUE) {
  1478. X!                 fight();
  1479. X!                 initialized=FALSE;
  1480. X!             }
  1481. X          }
  1482. X+         }
  1483. X  
  1484. X          /*navy combat*/
  1485. X          for(j=0;j<MAXNAVY;j++)
  1486. X!         if((nptr->nvy[j].warships!=0)
  1487. X!         &&(fought[nptr->nvy[j].xloc][nptr->nvy[j].yloc]==0)
  1488. X!         &&(sct[nptr->nvy[j].xloc][nptr->nvy[j].yloc].altitude==WATER)){
  1489. X  
  1490. X!             xspot=nptr->nvy[j].xloc;
  1491. X!             yspot=nptr->nvy[j].yloc;
  1492. X              fought[xspot][yspot]=1;
  1493. X  
  1494. X              /*initialize matrix*/
  1495. X!             if( !initialized ){
  1496. X!                 for(temp=0;temp<MGKNUM;temp++){
  1497. X!                     unit[temp]= owner[temp]=(-1);
  1498. X!                     side[temp]=NTRL;
  1499. X!                     troops[temp]=0;
  1500. X!                 }
  1501. X!                 initialized=TRUE;
  1502. X              }
  1503. X  
  1504. X              /*check all fleets in 2 sector range and add to matrix*/
  1505. X***************
  1506. X*** 149,155 ****
  1507. X              &&(count<MGKNUM)) {
  1508. X                  fought[NXLOC][NYLOC]=1;
  1509. X                  if((country!=ctry)
  1510. X!                 &&(ntn[ctry].dstatus[country]>HOSTILE)){
  1511. X                      valid=TRUE;
  1512. X                      anation=ctry;
  1513. X                      dnation=country;
  1514. X--- 162,168 ----
  1515. X              &&(count<MGKNUM)) {
  1516. X                  fought[NXLOC][NYLOC]=1;
  1517. X                  if((country!=ctry)
  1518. X!                 &&(nptr->dstatus[country]>HOSTILE)){
  1519. X                      valid=TRUE;
  1520. X                      anation=ctry;
  1521. X                      dnation=country;
  1522. X***************
  1523. X*** 158,164 ****
  1524. X                  owner[count]=country;
  1525. X                  count++;
  1526. X              }
  1527. X!             if(valid==TRUE) navalcbt();
  1528. X          }
  1529. X      }
  1530. X      free(fought);
  1531. X--- 171,180 ----
  1532. X                  owner[count]=country;
  1533. X                  count++;
  1534. X              }
  1535. X!             if(valid==TRUE) {
  1536. X!                 navalcbt();
  1537. X!                 initialized=FALSE;
  1538. X!             }
  1539. X          }
  1540. X      }
  1541. X      free(fought);
  1542. X*** omove.c    Sat Aug 26 19:04:07 1989
  1543. X--- move.c    Sat Aug 26 19:04:17 1989
  1544. X***************
  1545. X*** 55,61 ****
  1546. X          clrtoeol();
  1547. X          if((P_NMOVE==0)) {
  1548. X              errormsg("That Fleet is Not Able Move Any Farther");
  1549. X!             redraw=FALSE;
  1550. X              armornvy=AORN;
  1551. X              return;
  1552. X          }
  1553. X--- 55,61 ----
  1554. X          clrtoeol();
  1555. X          if((P_NMOVE==0)) {
  1556. X              errormsg("That Fleet is Not Able Move Any Farther");
  1557. X!             redraw=DONE;
  1558. X              armornvy=AORN;
  1559. X              return;
  1560. X          }
  1561. X***************
  1562. X*** 65,71 ****
  1563. X          clrtoeol();
  1564. X          if(P_AMOVE==0){
  1565. X              errormsg("That Unit is Not Able to Move");
  1566. X!             redraw=FALSE;
  1567. X              armornvy=AORN;
  1568. X              return;
  1569. X          }
  1570. X--- 65,71 ----
  1571. X          clrtoeol();
  1572. X          if(P_AMOVE==0){
  1573. X              errormsg("That Unit is Not Able to Move");
  1574. X!             redraw=DONE;
  1575. X              armornvy=AORN;
  1576. X              return;
  1577. X          }
  1578. X***************
  1579. X*** 76,82 ****
  1580. X              refresh();
  1581. X              if( getch() == 'y' )  P_ASTAT=ATTACK;
  1582. X              else {
  1583. X!                 redraw=FALSE;
  1584. X                  armornvy=AORN;
  1585. X                  return;
  1586. X              }
  1587. X--- 76,82 ----
  1588. X              refresh();
  1589. X              if( getch() == 'y' )  P_ASTAT=ATTACK;
  1590. X              else {
  1591. X!                 redraw=DONE;
  1592. X                  armornvy=AORN;
  1593. X                  return;
  1594. X              }
  1595. X***************
  1596. X*** 153,159 ****
  1597. X              break;
  1598. X          case ' ':        /* redraw map */
  1599. X              valid=FALSE;
  1600. X!             redraw=TRUE;
  1601. X              coffmap();
  1602. X              /*see within one sector of unit*/
  1603. X              if(hilmode==3) {
  1604. X--- 153,161 ----
  1605. X              break;
  1606. X          case ' ':        /* redraw map */
  1607. X              valid=FALSE;
  1608. X!             centermap();
  1609. X!             clear();
  1610. X!             redraw=PART;
  1611. X              coffmap();
  1612. X              /*see within one sector of unit*/
  1613. X              if(hilmode==3) {
  1614. X***************
  1615. X*** 488,493 ****
  1616. SHAR_EOF
  1617. echo "End of part 1"
  1618. echo "File patchV4.5 is continued in part 2"
  1619. echo "2" > s2_seq_.tmp
  1620. exit 0
  1621.